# author : 202213216李豆豆
# （3）本学期学校共开设了3门选修课，一个班有25位学生，选修的情况如下:
# 选修1号课程的同学有:李雷、张玉、王晓刚、陈红静、方向、司马清;
# 选修2号课程的同学有:施然、李芳芳、刘潇、方向、孙一航、黄煌;
# 选修3号课程的同学有:陈红静、方向、刘培良、张玉、施小冉、司马清。
# 请编写程序解决以下问题:
# ①这个班有多少位学生没有选课?
# ②有多少位学生同时选修了2门课?
# ③有多少位学生同时选修了3门课?
# ④有多少位学生只选修了1门课?

# 数据初始化
course1 = {"李雷", "张玉", "王晓刚", "陈红静", "方向", "司马清"}
course2 = {"施然", "李芳芳", "刘潇", "方向", "孙一航", "黄煌"}
course3 = {"陈红静", "方向", "刘培良", "张玉", "施小冉", "司马清"}
total = 25

# 同时选了三门课 course1 & course2 & course3
# 下面同理，采用集合可以直接使用交并集的特性进行运算
res3 = len((course1 & course2 & course3))
print("选3门课的人数：{}".format(res3))
res2 = (len(course1 & course2) + len(course2 & course3) + len(course3 & course1) - 2 * res3)
print("选2门课的人数：{}".format(res2))
res1 = (len(course1) + len(course2) + len(course3) - res2 - res3)
print("选1门课的人数：{}".format(res1))
res0 = total - res1
print("没选课的人数：{}".format(res0))
